Businesses are growing increasingly dependent on distributed computing environments and wide area computer networks to accomplish critical tasks. Indeed, a wide variety of business applications are deployed across intranet, extranet and Internet connections to effect essential communications with workers, business partners and customers. As the number of users, applications and external traffic increases, however, network congestion forms, impairing business application performance. Enterprise network managers, therefore, are constantly challenged with determining the volume, origin and nature of network traffic to align network resources with business priorities and applications.
Data compression, caching and other technologies that optimize or reduce the size of network traffic flows can be deployed to improve the efficiency and performance of a computer network and ease congestion at bottleneck links. For example, implementing data compression and/or caching technology can improve network performance by reducing the amount of bandwidth required to transmit a given block of data between two network devices along a communications path. Data compression technologies can be implemented on routing nodes without alteration of client or server end systems, or software applications executed therein, to reduce bandwidth requirements along particularly congested portions of a communications path. For example, tunnel technologies, like those used in Virtual Private Network (VPN) implementations, establish tunnels through which network traffic is transformed upon entering at a first network device in a communications path and restored to substantially the same state upon leaving a second network device.
A variety of compression algorithms and technologies have been developed, such as the run-length encoding (RLE), Huffman encoding, Lempel-ziv compression (e.g., LZ77, LZ78, etc.), Lempel-Ziv-Welch (LZW) compression, fixed library compression, and combinations/variants of the foregoing compression methods. All compression methods have their own advantages and tradeoffs. It is generally understood that no single compression method is superior for all applications and data types. The most beneficial choice of compression tools and libraries for a particular network application depends on the characteristics of the data and application in question: streaming versus file; expected patterns and regularities in the data; relative importance of CPU usage, memory usage, channel demands and storage requirements; and other factors.
Given the foregoing, it may often be the case that the selection of a given compression method may not be optimal for a given network application. Prior art technologies, however, do not provide information about the performance or advantages of one compression method relative to other compression methods. Furthermore, the selection of a given compression method will generally be based on an assessment of generalized, historical data and not on actual network traffic that traverses a given network. Network application behavior and, thus, the data transmitted between hosts, however, are not static. For example, if a network application is broadly defined as HTTP or web browsing, the data transmitted between hosts could span a vast array of data types, formats and varying combinations of image and text data. However, the compression method applied to a given network application is statically configured and does not adapt to actual network traffic which may change over time. Accordingly, the selection of a compression algorithm at one point in time may not be optimal at subsequent points in time. Even assuming that a user is able to discover a relatively better compression method for a given network application, the user would have to manually configure one or more network devices to implement the newly desired compression method.
In light of the foregoing, a need exists in the art for methods, apparatuses and systems that dynamically adapt the compression algorithm applied to one or more selected network applications. Embodiments of the present invention substantially fulfill this need.